// 维修报备页面逻辑 start
const {
  baseUrl,
  getRequest,
  postRequest
} = require("../../../utils/request.js");
const {
  mock_flag,
  login_flag
} = require("../../../data/index.js");

Page({
  data: {
    // 用户id
    userId: 0,
    // 维修报备
    repairReportContent: '', // 报修内容
    repairReportImage: [] // 报修照片数组
  },
  onLoad(options) {
    // 登录拦截
    const isLogin = wx.getStorageSync('isLogin');
    if (!isLogin) {
      wx.showToast({
        title: '请先登录',
        icon: 'none'
      });
      if (login_flag) {
        wx.redirectTo({
          url: '/pages/user/wxlogin/wxlogin'
        });
      }
      if (!login_flag) {
        wx.redirectTo({
          url: '/pages/user/login/login'
        });
      }
    }
    // 初始化数据
    this.setData({
      userId: wx.getStorageSync('userId'), // 获取用户id
    });
    // mock数据
    if (mock_flag) {
      this.setData({

      });
    }
    // 网络请求
    if (!mock_flag) {

    }
  },
  /**
   * 新增维修报备
   */
  // 监听报修内容输入
  onContentInput(e) {
    this.setData({
      repairReportContent: e.detail.value
    });
  },
  // 选择照片并上传
  chooseImage() {
    wx.chooseImage({
      count: 9, // 最多可以选择的图片张数
      sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图，默认二者都有
      sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机，默认二者都有
      success: (res) => {
        // 返回选定照片的本地文件路径列表，tempFilePath可以作为img标签的src属性显示图片
        const tempFilePaths = res.tempFilePaths;
        if(!mock_flag){
          const uploadPromises = tempFilePaths.map((tempFilePath) => {
            return new Promise((resolve, reject) => {
              wx.uploadFile({
                url: `${baseUrl}/file/fastdfs/upload`, // 后端上传接口地址
                filePath: tempFilePath,
                name: 'file',
                success: (uploadRes) => {
                  try {
                    const res = JSON.parse(uploadRes.data);
                    if (res.code === 200) {
                      //console.log(res.data)
                      //上传成功则加入数据列表
                      this.setData({
                        repairReportImage: this.data.repairReportImage.concat(res.data)
                      })
                      //resolve(data.data); // 返回上传成功后的图片 URL
                    } else {
                      reject(new Error('文件上传失败，错误码：' + res.code));
                    }
                  } catch (parseError) {
                    reject(new Error('解析后端响应数据失败：' + parseError.message));
                  }
                },
                fail: (err) => {
                  reject(new Error('文件上传请求失败：' + err.errMsg));
                }
              });
            });
          });
        }
      }
    });
  },
  // 预览照片
  previewImage(e) {
    const index = e.currentTarget.dataset.index;
    const urls = this.data.repairReportImage;
    wx.previewImage({
      current: urls[index], // 当前显示图片的http链接
      urls: urls // 需要预览的图片http链接列表
    });
  },
  // 提交报备
  submitReport() {
    const {
      repairReportContent,
      repairReportImage
    } = this.data;
    console.log(repairReportImage)
    if (!repairReportContent && repairReportImage.length === 0) {
      wx.showToast({
        title: '请输入报修内容或选择照片',
        icon: 'none'
      });
      return;
    }
    // 这里可以添加提交数据到后端的逻辑
    if (mock_flag) {
      console.log(this.data.repairReportContent);
      console.log(this.data.repairReportImage);
      wx.showToast({
        title: '提交成功',
        icon: 'success'
      });
      // 清空数据
      this.setData({
        repairReportContent: '',
        repairReportImage: []
      });
    }
    if (!mock_flag) {
      this.http_repairReport_add()
    }
  },
  /**
   * 网络请求
   */
  //新增维修报备
  http_repairReport_add() {
    console.log(this.data.repairReportContent);
    console.log(this.data.repairReportImage);
    postRequest(baseUrl + "/front/repairReport/add", {
      repairReportImage: this.data.repairReportImage[0],
      repairReportContent: this.data.repairReportContent,
      repairReportStatus: '待处理',
      studentId: this.data.userId
    }).then(res => {
      //console.log(res.data)
      if (res.code == 200) {
        wx.showToast({
          title: '提交成功',
          icon: 'success'
        });
        // 清空数据
        this.setData({
          repairReportContent: '',
          repairReportImage: []
        });
      }
    })
  },
});